package Day18_网络编程.demo2_TCP通信程序.案例;

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author zhangyan
 * @date 2020/5/10 11:12
 */
public class Server {
    public static void main(String[] args) throws Exception {

        /**
         类 main()  运行服务端程序就是服务端
            TCP服务器端代码实现步骤
                * 创建ServerSocket对象并指定端口号(相当于开启了一个服务器)
                * 调用ServerSocket对象的accept方法等待客端户连接并获得对应Socket对象
                    //如果连接不成功,会一直阻塞
                    //如果连接成功会返回一个Socket对象
                * 调用Socket对象的getInputStream方法获得字节输入流对象,关联连接通道
                * 使用字节输入流 resd方法读取数据
                * 关闭Socket对象 ServerSocket一般不关闭
         */

        //1.创建服务端ServerSocket对象,并指定端口号
        ServerSocket ss = new ServerSocket(666);

        //2.使用ServerSocket对象accept方法 等待客户端连接
        //如果连接不成功,会一直阻塞
        //如果连接成功会返回一个Socket对象
        Socket socket = ss.accept(); //阻塞状态

        //3.使用返回的Socket对象调用getInputStream方法获得字节输入流对象,关联连接通道
        InputStream is = socket.getInputStream();

        //4.使用字节输入流read方法读取数据
        byte[] bytes = new byte[8192];
        int len = is.read(bytes);
        System.out.println("客户端发过来的信息:" + new String(bytes, 0, len));

        //5.关闭Socket对象 ServerSocket一般不关闭
        socket.close();
    }
}
